﻿/*
 * Created by SharpDevelop.
 * User: CeCi
 * Date: 25/04/2014
 * Time: 03:27 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Data;
using System.Collections.Generic;

namespace Gestión_UTN.blimpl
{
	/// <summary>
	/// Description of inscripcionMateriablimpl.
	/// </summary>
	public class inscripcionMateriablimpl:bl.inscripcionMateriabl
	{
		private static da.inscripcionMateriada createInsMateria = factories.dafactory.createInsMateria();
		private static bl.alumnobl createAlumno = factories.blfactory.createAlumno();
		private static bl.cursadabl createCursada = factories.blfactory.createCursada();
		private static bl.materiabl createMateria = factories.blfactory.createMateria();
		
		public inscripcionMateriablimpl()
		{
		}
		
		public bool SaveInscripcionMateria(Gestión_UTN.bo.InscripcionMateriabo inm)
		{
			bool ingresada = false;
			
			try 
			{
				ingresada = (null != inm)
					? createInsMateria.SaveInscripcionMateria(inm.Fecha,
					                                          inm.Alumno.Dni,
					                                          inm.Cursada.Id,
					                                          inm.Materia.Id)
					:false;
				
			} 
			catch (Exception)
			{
				
				ingresada = false;
			}
			
			return ingresada;
		}
		
		public bool DeleteInscripcionMateria(DateTime fecha, int alu_dni, int mat_id)
		{
			bool eliminada = false;
			
			try 
			{
				eliminada = (null != fecha && 0 != alu_dni && 0 != mat_id)
					? createInsMateria.DeleteInscripcionMateria(fecha,alu_dni,mat_id)
					:false;
			}
			catch (Exception)
			{
				
				eliminada = false;
			}
			
			return eliminada;
		}
		
		public bool ModifyInscripcionMateria(DateTime fecha_anterior, int alu_dni_anterior, int mat_id_anterior, Gestión_UTN.bo.InscripcionMateriabo inm)
		{
			bool modificada = false;
			
			try 
			{
				modificada = (null != fecha_anterior && 0 != alu_dni_anterior && 0 != mat_id_anterior && null != inm)
					? createInsMateria.ModifyInscripcionMateria(fecha_anterior, alu_dni_anterior, mat_id_anterior,
					                                            inm.Fecha, inm.Alumno.Dni, inm.Cursada.Id, inm.Materia.Id)
					: false;
			} 
			catch (Exception) 
			{
				
				modificada = false;
			}
			
			return modificada;
		}
		
		public System.Data.DataTable FindAllInscripcionesMaterias()
		{
			DataTable tablaInscripciones = null;
			
			try 
			{
				tablaInscripciones = createInsMateria.FindAllInscripcionesMaterias();
			} 
			catch (Exception)
			{
				
				tablaInscripciones = null;
			}
			
			return tablaInscripciones;
		}
		
		public System.Collections.Generic.List<Gestión_UTN.bo.InscripcionMateriabo> FindInscripcionMateriaByDNI(int alu_dni)
		{
			List<bo.InscripcionMateriabo> inscripciones = null;
			
			try 
			{
				List<Entities.InscripcionMateria> inscs = (0 != alu_dni)
					? createInsMateria.FindInscripcionMateriaByDNI(alu_dni)
					: null;
				
				if (null != inscs)
				{
					inscripciones = new List<Gestión_UTN.bo.InscripcionMateriabo>();
					
					foreach (var i in inscs)
					{
						bo.Alumnobo alu = createAlumno.FindAlumnoByDNI(i.Alu_dni);
						
						bo.Cursadabo cur = createCursada.FindCursadasById(i.Cur_id);
						
						bo.Materiabo mat = createMateria.FindMateriaByMatId(i.Mat_id);
						
						bo.InscripcionMateriabo inm = new bo.InscripcionMateriabo(i.Id,i.Fecha, alu,cur,mat);
						
						inscripciones.Add(inm);
						
						inm =  null;
						
						alu = null;
						
						mat = null;
						
						cur = null;
					}
				}
			} 
			catch (Exception) 
			{
				
				inscripciones = null;
			}
			
			return inscripciones;
		}
		
		public System.Collections.Generic.List<Gestión_UTN.bo.InscripcionMateriabo> FindInscripcionMateriaByMateria(int mat_id)
		{
			List<bo.InscripcionMateriabo> inscripciones = null;
			
			try 
			{
				List<Entities.InscripcionMateria> inscs = (0 != mat_id)
					? createInsMateria.FindInscripcionMateriaByMateria(mat_id)
					: null;
				
				if (null != inscs)
				{
					inscripciones = new List<Gestión_UTN.bo.InscripcionMateriabo>();
					
					foreach (var i in inscs)
					{
						bo.Alumnobo alu = createAlumno.FindAlumnoByDNI(i.Alu_dni);
						
						bo.Cursadabo cur = createCursada.FindCursadasById(i.Cur_id);
						
						bo.Materiabo mat = createMateria.FindMateriaByMatId(i.Mat_id);
						
						bo.InscripcionMateriabo inm = new bo.InscripcionMateriabo(i.Id,i.Fecha, alu,cur,mat);
						
						inscripciones.Add(inm);
						
						inm =  null;
						
						alu = null;
						
						mat = null;
						
						cur = null;
					}
				}
			} 
			catch (Exception) 
			{
				
				inscripciones = null;
			}
			
			return inscripciones;
		}
		
		public System.Collections.Generic.List<Gestión_UTN.bo.InscripcionMateriabo> FindInscripcionMateriaByFecha(DateTime fecha)
		{
			List<bo.InscripcionMateriabo> inscripciones = null;
			
			try 
			{
				List<Entities.InscripcionMateria> inscs = (null != fecha)
					? createInsMateria.FindInscripcionMateriaByFecha(fecha)
					: null;
				
				if (null != inscs)
				{
					inscripciones = new List<Gestión_UTN.bo.InscripcionMateriabo>();
					
					foreach (var i in inscs)
					{
						bo.Alumnobo alu = createAlumno.FindAlumnoByDNI(i.Alu_dni);
						
						bo.Cursadabo cur = createCursada.FindCursadasById(i.Cur_id);
						
						bo.Materiabo mat = createMateria.FindMateriaByMatId(i.Mat_id);
						
						bo.InscripcionMateriabo inm = new bo.InscripcionMateriabo(i.Id,i.Fecha, alu,cur,mat);
						
						inscripciones.Add(inm);
						
						inm =  null;
						
						alu = null;
						
						mat = null;
						
						cur = null;
					}
				}
			} 
			catch (Exception) 
			{
				
				inscripciones = null;
			}
			
			return inscripciones;
		}
	}
}
